<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <!-- 
        1. call() 
            作用: 对象A 通过call借用对象B, 那么对象A里的this就不再代表A, 而是代表B

        2. apply()  
            作用: 对象A 通过call借用对象B, 那么对象A里的this就不再代表A, 而是代表B
  
        3. call 和 apply 的区别
            * call 和 apply 作用一模一样, 第一个参数都是this所指向的对象
            * call 是分别接收参数
            * apply 是接收数组参数
    -->

    <script>
        var obj1 = {
            name: '杨幂',
            job: '演员',
            hobby:'王者荣耀',
            demo:function(){
                console.log(`我是${this.name},是一名${this.job},喜欢${this.hobby}`);
            }
        }


        var obj2 = {
            name : '海波',
            job  : '程序员',
            hobby : '尾行',
        }

        obj.demo();
        obj1.demo.call(obj2);
        obj1.demo.apply(obj2);
        console.log('------------------');


        var obj1 = {
            name : '杨幂',
            job: '演员',
            hobby :'王者荣耀',
            demo:function(hob2, hob3){
                console.log(`我是${this.name},`+`是一名${this.job},`+`喜欢${this.hobby},${hob2},${hob3}`);
            }
        }


        var obj2 = {
            name: '海波',
            job: '项目总监',
            hobby:'麻将三缺一',
        }

        obj.demo('英雄联盟','和平精英');
        obj.demo.call(obj2,'连连看','扫雷');
        obj1.demo.apply(obj2,['连连看','扫雷']);
    </script>
</body>
</html>